package global

import (
	"errors"
	"github.com/go-pg/pg"
)

var DB *pg.DB

func OpenDB() (err error) {
	if DB != nil {
		return nil
	}
	//读取配置文件
	section := Config.Section("database")
	addr := section.Key("addr").String()
	user := section.Key("user").String()
	pwd := section.Key("pwd").String()
	name := section.Key("name").String()
	logQuery := section.Key("logQuery").MustBool()

	if addr == "" {
		return errors.New("配置文件[database]节点中的addr参数不正确")
	}
	if user == "" {
		return errors.New("配置文件[database]节点中的user参数不正确")
	}
	if pwd == "" {
		return errors.New("配置文件[database]节点中的pwd参数不正确")
	}
	if name == "" {
		return errors.New("配置文件[database]节点中的name参数不正确")
	}
	DB = pg.Connect(&pg.Options{
		Addr:     addr,
		User:     user,
		Password: pwd,
		Database: name,
	})

	if logQuery == true {
		var tmpErr error
		DB.OnQueryProcessed(func(event *pg.QueryProcessedEvent) {
			query, err := event.FormattedQuery()
			if err != nil {
				tmpErr = err
				Logger.Error("查询日志错误：" + query)
			}
		})
		if tmpErr != nil {
			return tmpErr
		}
	}

	return nil
}
